package gui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JSpinner.DefaultEditor;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SpinnerDateModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.border.TitledBorder;

import fachlogik.Eintrag;
import fachlogik.LagerException;

import javax.swing.JButton;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class EintragEditor extends JPanel
{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private JTextField tfname;
	private JTextArea tfbeschreibung;
	private JTextField tfkuerzel;
	private JTextField tflagerort;
	private JSpinner spstueckzahl;
	
	private SpinnerNumberModel eintragstueckzahl = new SpinnerNumberModel(0,0,0+1000,1);
	//private SpinnerDateModel eintragstueckzahl = new SpinnerDateModel();
	private Eintrag eintrag;

	public EintragEditor()
	{
		initPanel();
		block();
	}
	public EintragEditor(Eintrag e)
	{
		initPanel();
		setEintrag(e);
		block();
		
	}
	
	private void initPanel()
	{
		setLayout(new BorderLayout(0,0));
		
		JButton btnNewButton = new JButton("Aendern");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				do_btnNewButton_actionPerformed(e);
			}
		});
		add(btnNewButton, BorderLayout.NORTH);
		
		JPanel panel_1 = new JPanel();
		add(panel_1, BorderLayout.WEST);
		panel_1.setLayout(new BorderLayout(0, 0));
		
		JPanel panel_2 = new JPanel();
		panel_1.add(panel_2);
		panel_2.setLayout(new GridLayout(0, 2, 5, 5));
		
		JLabel lblNewLabel = new JLabel("Name");
		panel_2.add(lblNewLabel);
		
		tfname = new JTextField();
		panel_2.add(tfname);
		tfname.setColumns(20);
		
		JLabel lblKuerzel = new JLabel("K\u00FCrzel");
		panel_2.add(lblKuerzel);
		
		tfkuerzel = new JTextField();
		panel_2.add(tfkuerzel);
		tfkuerzel.setColumns(10);
		
		JLabel lblLagerort = new JLabel("Lagerort");
		panel_2.add(lblLagerort);
		
		tflagerort = new JTextField();
		panel_2.add(tflagerort);
		tflagerort.setColumns(10);
		
		JLabel lblstueckzahl = new JLabel("St\u00FCckzahl");
		panel_2.add(lblstueckzahl);
		
		spstueckzahl = new JSpinner(eintragstueckzahl);
		panel_2.add(spstueckzahl);
		
		
		tfbeschreibung = new JTextArea();
		JScrollPane scrollPane = new JScrollPane(tfbeschreibung);
		scrollPane.setViewportBorder(new TitledBorder(null, "Beschreibung", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		scrollPane.setName("Beschreibung");
		scrollPane.setPreferredSize(new Dimension(400, 200));
		add(scrollPane, BorderLayout.SOUTH);
		
	}
	
	public Eintrag getEintrag() throws LagerException
	{
		if (eintrag != null)
		{
			try
			{
				eintrag.setName(tfname.getText());
				eintrag.setBeschreibung(tfbeschreibung.getText());
				eintrag.setKuerzel(tfkuerzel.getText());
				eintrag.setLagerort(tflagerort.getText());
				eintrag.setStueckzahl((Integer) eintragstueckzahl.getValue());
			}
			catch (NumberFormatException e)
			{
				throw new LagerException("ungültige Zahl");
			}
			
			
		}
		return eintrag;
	}
	
	public void setEintrag (Eintrag eintrag)
	{
		
		this.eintrag = eintrag;
		if (eintrag != null)
		{
			tfname.setText(eintrag.getName());
			tfbeschreibung.setText(eintrag.getBeschreibung());
			tfkuerzel.setText(eintrag.getKuerzel());
			tflagerort.setText(eintrag.getLagerort());
			eintragstueckzahl.setValue(eintrag.getStueckzahl());
		}
		else
		{
			tfname.setText("");
			tfbeschreibung.setText("");
			tfkuerzel.setText("");
			tflagerort.setText("");
			
		}
		
	}
	
	protected void do_btnNewButton_actionPerformed(ActionEvent e) 
	{
		deblock();
	}
	public void block()
	{
		
		tfname.setEditable(false);
		tfbeschreibung.setEditable(false);
		tfkuerzel.setEditable(false);
		tflagerort.setEditable(false);
		JFormattedTextField ampmspin=((JSpinner.DefaultEditor)spstueckzahl.getEditor()).getTextField(); ampmspin.setEditable(false);
	}
	public void deblock()
	{
		
		tfname.setEditable(true);
		tfbeschreibung.setEditable(true);
		tfkuerzel.setEditable(true);
		tflagerort.setEditable(true);
		JFormattedTextField ampmspin=((JSpinner.DefaultEditor)spstueckzahl.getEditor()).getTextField(); ampmspin.setEditable(true);
	
	}
}
